package com.yqkj.zysoft.upms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import  com.project.easy.common.util.dto.PageResDto;
import com.yqkj.zysoft.upms.entity.FrameworkUser;
import com.yqkj.zysoft.upms.entity.dto.FrameWorkUserAddRequest;
import com.yqkj.zysoft.upms.entity.dto.FrameWorkUserDetailResponse;
import com.yqkj.zysoft.upms.entity.dto.FrameWorkUserUpdateRequest;
import com.yqkj.zysoft.upms.entity.dto.PageUserRequest;
import com.yqkj.zysoft.upms.entity.dto.VerifyCodeAccNoRequest;

/**
 * <p>
 *  用户服务类
 * </p>
 *
 * @author GreatorMan.cool
 * @since 2022-09-15
 */
public interface IFrameworkUserService extends IService<FrameworkUser> {
    /**
     * 用户密码修改
     * @param password 密码
     * @param userId  用户ID
     * @return true 成功
     */
    Boolean updatePassword(String password, Long userId);
    /**
     * 用户角色编辑
     * @param roleIds 角色ID集合
     * @param userId 用户ID
     * @return true 成功 false 失败
     */
    Boolean updateRole(String roleIds, Long userId);
    /**
     * 编辑用户组
     * @param groupId 用户组ID
     * @param userId  用户ID
     * @return true 成功 false 失败
     */
    Boolean updateGroup(Long groupId, Long userId);
    /**
     * 编辑部门
     * @param departCode 部门编码
     * @param userId  用户ID
     * @return 返回 true 成功 false 失败
     */
    Boolean updateDepart(String departCode, Long userId);
    /**
     * 用户详情
     * @param id 用户ID
     * @return 返回用户详情
     */
    FrameWorkUserDetailResponse detail(Long id);
    /**
     * 新增
     * @param frameWorkUserAddRequest 参数
     * @return 返回 true 成功 false 失败
     */
    Long add(FrameWorkUserAddRequest frameWorkUserAddRequest);

    /**
     * 更新数据
     * @param frameWorkUserUpdateRequest 参数
     * @return true 成功 false 失败
     */
    Boolean updateObject(FrameWorkUserUpdateRequest frameWorkUserUpdateRequest);
    /**
     * 分页
     * @param pageUserRequest 分页查询条件
     * @return 返回数据
     */
    PageResDto<FrameworkUser> pageList(PageUserRequest pageUserRequest);
    /**
     * 验证数据
     * @param  verifyCodeAccNoRequest 参数
     * @return true 验证成功 false 验证失败
     */
    Boolean verifyCode(VerifyCodeAccNoRequest verifyCodeAccNoRequest);
    /**
     * 启用
     * @param id ID
     * @return true 启用成功 false 启用失败
     */
    public Boolean able(Long id);

    /**
     * 启用
     * @param id ID
     * @return true 启用成功 false 启用失败
     */
    public Boolean disAble(Long id);

    /**
     * 验证是否存在
     * @param apiToken 令牌
     * @return 返回
     */
    public FrameworkUser  queryByApiToken(String apiToken);
}
